_require local "../../../../basis.smi"
(* _require local "../../../../ffi/main/Pointer.smi" *)
_require local "../../../data/symbols/main/RecordLabel.smi"
(* _require local "../../../data/symbols/main/Loc.smi" *)
_require local "../../../libs/env/main/SEnv.smi"
_require local "../../../libs/ids/main/LocalID.smi"
_require local "../../../compilePhases/bitmapcompilation/main/RecordLayout.smi"
_require local "../../../compilePhases/bitmapcompilation/main/RecordLayoutCalc.ppg.smi"
_require local "../../../data/runtimetypes/main//RuntimeTypes.ppg.smi"

_require local "../../debug/main/Bug.smi"
(* _require local "../../userlevelprimitive/main/UserLevelPrimitive.smi" *)
(* _require local "./ReifiedTy.ppg.smi" *)
_require "./ReifiedTerm.ppg.smi"
_require "./ReifiedTy.ppg.smi"
(* _require "./ReifiedUtils.smi" *)

structure ReifiedTermToML =
struct
  datatype tag = UNBOXED | BOXED
  val tagToWord : tag -> word
  val constTag : ReifiedTy.reifiedTy -> tag

  val reifiedTermToMLWithTy : ['a#reify. ReifiedTerm.reifiedTerm -> ReifiedTy.tyRep -> 'a]
  val reifiedTermToML : ['a#reify. ReifiedTerm.reifiedTerm -> 'a]
  val isBoxed : ReifiedTy.reifiedTy -> bool
(*
  exception AttemptToConvertNullValue
  exception AttemptToConvertVoidValue
  exception Undetermined
*)
end
